<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="obj.name">
        <button @click="fn">点击</button>
    </div>
    <script src="vue.js"></script>
    <script>
        // 响应式完成 : 数据正常的实现了数据绑定, 响应式完成
    let vm=new Vue({
        el:'#app',
        data:{
            obj:{
                // 正常响应式数据写在data里面
            }
        },
        methods:{
            fn(){
            //一开始data里未声明,
            //后来使用  this.obj.name = 'zs' 已经晚了,无法实现数据劫持 .无法实现正常响应式
                console.log('hello');
                // this.obj.name='yt'
                // 第二种方式实现数据绑定
                this.$set(this.obj,'name','yt');
                //* 总结 : 
                //方式1. 以后使用数据绑定 , 先在data里声明一下, 然后再使用  (推荐)
                //方式2. 如果在第三方框架里,会出现无法添加额外的属性, 想后来参与数据劫持(响应式) ,  this.$set(this.obj,'name','')

            }
        }
    })
    
    </script>
</body>
</html>